import { PrimaryColumn , Column , OneToOne, JoinColumn , ManyToOne, Entity , } from 'typeorm';
import { StatusEnum } from './status_enum';
import { MemoLists } from './memo_lists';

@Entity()
class TodoDetail {

    @PrimaryColumn()
    id: number;

    @Column({
        type: "varchar",
        length: 255,
        nullable: false,
    })
    title: string;

    @Column({
        type: "varchar",
        length: 255,
    })
    desc: string;

    /**
     * 草！写用户原型的时候，因为造的数据，用户跟角色一样多，一个用户只关联一个角色，所以写OneToOne没问题。但是写到这的时候就出问题了，我一直以为这种详情列表里面涉及到字典表的时候就一对一就完事了，结果并不是。。。操他妈，试了半天发现，typeorm的所谓一对一就是严格的一对一，并不是我这里理解的一条待办事项数据就有状态字典表中的一个状态，而是理解为：状态字典表是固定的，列表数据每一条对应一个状态，乍一看没毛病，其实多条数据都可以是同一个状态，也就是，状态跟列表数据其实是一对多的关系。。。what fuck！？是我老了理解有问题，还是typeorm关联的设计者的脑回路反人类。。。所以用户的原型其实也写错了，日了狗了，又要返工
     * tips: 这边OneToOne 跟 ManyToOne/OneToMany 在数据库中表现出来的最显著的区别，据老夫观察，就是主表在建外键同时建了个索引（两者都是），但是前者索引是Unique后者是Normal。爬坑埋点，以观后效。。。
     */
    @ManyToOne(type => StatusEnum, statusEnum => statusEnum.id)
    statusEnum: StatusEnum;

    @ManyToOne(type => MemoLists, memoLists => memoLists.todo_details)
    memoLists: MemoLists;
}

export { TodoDetail }